﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Sinacor.Infra.Common;
using Sinacor.Infra.UI.Common;
using Sinacor.UI.Bovespa.Ordens;
using System.ComponentModel;
using Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens;


namespace Sinacor.UI.Bovespa.Ordens.Communication.Translator
{
    public class TranslatorOrdemDigitacao :
       BaseTranslator<Communication.Bovespa.Ordens.OrdemDigitacao.InserirOrdemDigitacao,
        Model.OrdemDigitacao,
        List<Communication.Bovespa.Ordens.OrdemDigitacao.InserirOrdemDigitacao>,
        ModelCollection<Model.OrdemDigitacao>>
    {

        public override Communication.Bovespa.Ordens.OrdemDigitacao.InserirOrdemDigitacao Translate(Model.OrdemDigitacao from)
        {
            Communication.Bovespa.Ordens.OrdemDigitacao.InserirOrdemDigitacao to = new Communication.Bovespa.Ordens.OrdemDigitacao.InserirOrdemDigitacao();
            to.ApelidoCliente = from.ApelidoCliente;
            to.CodigoAgenteCustodia = from.CodigoAgenteCustodia;
            to.CodigoCarteira = from.CodigoCarteira;
            to.CodigoCliente = from.CodigoCliente;
            to.CodigoClienteCustodia = from.CodigoClienteCustodia;
            to.DataOrdem = from.DataOrdem;
            to.DigitoClienteCustodia = from.DigitoClienteCustodiaDigitacao;
            to.DigitoVerificadorCliente = from.DigitoVerificadorCliente;
            to.IndicadorNaoLiquidacao = from.IndicadorNaoLiquidacao;
            to.IndicadorSistemaExterno = from.IndicadorSistemaExterno;
            to.NumeroOrdem = from.NumeroOrdem;
            to.NumeroOrdemSubSequencia = from.NumeroOrdemSubSequencia;
            to.NumeroSequenciaDigitacao = from.NumeroSequenciaDigitacao;
            to.PercentualAcrescimo = from.PercentualAcrescimo;
            to.PercentualDistribuido = from.PercentualDistribuido;
            to.PrecoInformado = from.PrecoInformado;
            to.QuantidadeDestinadaCliente = from.QuantidadeDestinadaCliente;
            to.SituacaoCliente = from.SituacaoCliente;
            
            TranslatorTipoLiquidacaoDistribuicao tipoLiquidacaoDistribuicao = new TranslatorTipoLiquidacaoDistribuicao();
            Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.OrdemDigitacao.TipoLiquidacaoDistribuicao? tipoLiquidaEnum = new Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.OrdemDigitacao.TipoLiquidacaoDistribuicao();
            tipoLiquidacaoDistribuicao.TranslateEnum(from.TipoLiquidacao, out tipoLiquidaEnum);
            to.TipoLiquidacao = tipoLiquidaEnum;
            
            to.DataMovimento = from.DataMovimento;
            to.ValorDolar = from.ValorDolar;
            Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.OrdemDigitacao.TipoDistribuicao? tipoDistribuicao = new Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.OrdemDigitacao.TipoDistribuicao();
            new TranslatorEnumTipoDistribuicao().TranslateEnum(from.TipoDistribuicao, out tipoDistribuicao);
            to.TipoDistribuicao = tipoDistribuicao;
            Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.OrdemDigitacao.TipoOrdemDistribuicao tipoOrdemDistribuicao = new Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.OrdemDigitacao.TipoOrdemDistribuicao();
            new  TranslatorEnumTipoOrdemDistribuicao().TranslateEnum(from.TipoOrdemDistribuicao,out tipoOrdemDistribuicao);
            to.TipoOrdemDistribuicao = tipoOrdemDistribuicao;

            return to; 
          
        }
    }
}

